﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NextAction.Domain.Entities;
using NextAction.Domain.Concrete;

namespace NextAction.Domain.Abstract
{
    public interface IGtdEnityRepository
    {
        //IQueryable<GtdTask> GtdTasks { get; }

        //IQueryable<GtdProject> GetGtdProjects();

        IQueryable<GtdTask> GetGtdTasks(GtdTaskType taskType);

        IQueryable<GtdTask> GetGtdTasks(GtdTaskType taskType, ScheduleFilter schedule);

        void SaveGtdTask(GtdTask task);

        void DeleteGtdTask(GtdTask task);

        GtdTask GetGtdTask(int taskID);

        IList<GtdTask> GetTasksForProject(int projectID);
 
        GtdProject GetProject(int projectID);

        IList<GtdProject> GetProjectsOrderedByName();

        IList<GtdProject> GetProjectsOrderedByPriority();

        void SaveGtdProject(GtdProject project);

        void DeleteGtdProject(GtdProject project);

        IList<GtdProject> GetGtdProjectsWithDefault();

        IQueryable<Priority> GetPriorities();

        BucketSizes GetBucketSizes();

        //IList<GtdProject> GetProjects();

    }
}
